import torch

import torch.nn as nn
# 假设的one-hot编码

one_hot_encoded = [

[0, 1, 0, 0], # 表示类别索引为1

[1, 0, 0, 0], # 表示类别索引为0

[0, 0, 1, 0] # 表示类别索引为2

]

  

# 将one-hot编码转换为索引

indices = [1, 0, 2] # 这是从one-hot编码中提取的类别索引

  

# 转换为PyTorch张量

indices_tensor = torch.tensor(indices)

  

# 创建一个nn.Embedding层，字典大小为4，嵌入维度为5
#1. **类别数量**：您的one-hot编码表示了三个不同的类别，分别由one-hot编码`[0,1,0,0]`、#`[1,0,0,0]`和`[0,0,1,0]`表示。这意味着至少有三个不同的类别。所以索引
# num_embeddings 为：4； 
    
# 2. **索引范围**：在one-hot编码中，每个类别可以通过索引来识别。在您的示例中，索引0、1和2分别对应于这三个类别。
embedding_layer = nn.Embedding(num_embeddings=4, embedding_dim=4)
# initial_weights = torch.tensor([  
#     [1.0, 0.7, 1.0, 1.0],  # 第一个嵌入  
#     [0.8, 0.1, 1.0, 1.0],  # 第二个嵌入  
#     [1.0, 1.0, 1.0, 1.0],  # 第三个嵌入  
#     [1.0, 1.0, 1.0, 2.0]  # 第四个嵌入  
# ], dtype=torch.float32) 
# # 使用embedding层将索引转换为向量
# embedding_layer.weight.data.copy_(initial_weights)  
embedded_vectors = embedding_layer(indices_tensor) 
# 查看结果

print(embedding_layer.embedding_dim)
print(embedded_vectors)
print(embedding_layer.weight)